package com.paziy.notes.core;

/**
 * All clef keys
 *
 * @author thecederick@gmail.com (Paziy Evgeniy)
 * @version 0.1
 * @since 0.1 (07.12.13 15:27)
 */
public enum Clef {
    Treble(ClefType.G, (byte) 2),
    FranchViolet(ClefType.G, (byte) 1),
    Bass(ClefType.F, (byte) 4),
    BaritoneF(ClefType.F, (byte) 3),
    SubBass(ClefType.F, (byte) 5),
    Alto(ClefType.C, (byte) 3),
    Tenor(ClefType.C, (byte) 4),
    BaritoneC(ClefType.C, (byte) 5),
    MezzoSoprano(ClefType.C, (byte) 2),
    Soprano(ClefType.C, (byte) 1),
    Drums(ClefType.NEUTRAL, (byte) 1),
    Percussion(ClefType.NEUTRAL, (byte) 1),
    Tablature(ClefType.TABLATURE, (byte) 1);

    /**
     * The clef type of current clef
     */
    private ClefType type;

    /**
     * The target line of clef
     */
    private byte lineNumber;

    Clef(ClefType type, byte lineNumber) {
        this.type = type;
        this.lineNumber = lineNumber;
    }

    /**
     * The getter for clef type
     *
     * @return clef type
     */
    public ClefType getType() {
        return type;
    }

    /**
     * The target line of clef
     *
     * @return number of line
     */
    public byte getLineNumber() {
        return lineNumber;
    }
}
